package com.example.demo.arithmetic.algorithm.recursion;

import java.util.Arrays;

/**
 * 递归实现冒泡排序
 * 1.将数组分为两部分 [0....j] [j+1,a.length-1]
 * 2.左边是未排序部分
 * 3.右边[j+1..a.length-1]是已排序
 * 4.未排序区间内，相邻的两个元素比较，如果前一个大于后一个，则交换位置
 */
public class BubbleSort {

    public static void main(String[] args) {
        int[] a = {4, 3, 2, 1, -1};
        sort(a);
        System.out.println(Arrays.toString(a));
    }

    public static void sort(int[] a) {
        bubble(a, a.length - 1);
    }

    private static void bubble(int[] a, int j) {
        if (j == 0) return;
        for (int i = 0; i < j; i++) {
            if (a[i] > a[i + 1]) {
                int temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }

        bubble(a, j - 1);
    }
}
